/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package server.senders;

import cliente.comunicacion.ICliente;
import java.rmi.RemoteException;
import server.negocio.Controlador_Servidor;

/**
 *
 * @author tpaxle
 */
public class Sender_notificacion extends Thread{
    private ICliente destino;
    private Object dato_notificacion;
    private int tipo_notificacion;
    private int opcion;
    private Controlador_Servidor C_Servidor;
    private long idsesion= 0;
    public Sender_notificacion(Long idSesion, ICliente destino, Object dato, int tipo_notificacion, Controlador_Servidor C_Servidor){
        this.destino= destino;
        this.dato_notificacion= dato;
        this.tipo_notificacion= tipo_notificacion;
        this.C_Servidor= C_Servidor;
        this.idsesion= idSesion;
    }


    @Override
    public void run() {
        int nintentos= 3;
        boolean correcto= false;
        while(nintentos>0 && !correcto){
            try {
                destino.notificar(tipo_notificacion, dato_notificacion);
                correcto= true;
            } catch (RemoteException ex) {
                C_Servidor.log("problema al notificar: "+ nintentos + " restantes" + ex);
            } catch (Exception ex){
                C_Servidor.log("problema al notificar: "+ nintentos + " restantes" + ex);
            }
            nintentos--;
        }
        //Si despues de intentar notificar 3 veces no ha sido posible se elimina el cliente
        if(!correcto){
            C_Servidor.eliminarsesion(idsesion);
        }
    }


}
